/**
 * 🔐 认证混入 - 统一的页面认证逻辑
 * 在需要认证的页面中使用此混入
 */
import { mapGetters, mapActions } from 'vuex'

export default {
	computed: {
		...mapGetters([
			'isAuthenticated',
			'userid',
			'userInfo',
			'empname',
			'orgname'
		])
	},
	
	methods: {
		...mapActions([
			'checkAuthStatus',
			'checkAuthStatusDirect'
		]),
		
		/**
		 * 🔧 页面认证检查 - 在onLoad中调用
		 * @param {Function} successCallback - 认证成功后的回调函数
		 * @param {Function} failCallback - 认证失败后的回调函数（可选）
		 */
		async performPageAuth(successCallback, failCallback) {
			console.log(`🔍 ${this.$options.name || '页面'} 开始认证检查...`);
			
			// 🎯 先检查当前认证状态
			console.log("🔍 当前认证状态:", {
				isAuthenticated: this.isAuthenticated,
				userid: this.userid,
				userInfo: this.userInfo
			});
			
			// 🔧 等待checkAuthStatus执行完成
			const authResult = await this.checkAuthStatus();
			console.log("🔍 认证检查结果:", authResult);
			
			if (authResult && authResult.success) {
				console.log("✅ 认证成功，用户ID:", this.userid);
				
				// 执行成功回调
				if (typeof successCallback === 'function') {
					successCallback();
				}
			} else {
				console.log("❌ 认证失败，将跳转到认证页面");
				
				// 执行失败回调
				if (typeof failCallback === 'function') {
					failCallback();
				}
				
				// checkAuthStatus已经处理了跳转逻辑
			}
			
			return authResult;
		},
		
		/**
		 * 🔧 直接认证检查 - 避免显示主页，直接跳转到企业微信授权
		 * @param {Function} successCallback - 认证成功后的回调函数
		 * @param {Function} failCallback - 认证失败后的回调函数（可选）
		 */
		async performDirectAuth(successCallback, failCallback) {
			console.log(`🔍 ${this.$options.name || '页面'} 开始直接认证检查...`);
			
			// 🎯 先检查当前认证状态
			console.log("🔍 当前认证状态:", {
				isAuthenticated: this.isAuthenticated,
				userid: this.userid,
				userInfo: this.userInfo
			});
			
			// 🔧 等待直接认证检查执行完成
			const authResult = await this.checkAuthStatusDirect();
			console.log("🔍 直接认证检查结果:", authResult);
			
			if (authResult && authResult.success) {
				console.log("✅ 认证成功，用户ID:", this.userid);
				
				// 执行成功回调
				if (typeof successCallback === 'function') {
					successCallback();
				}
			} else {
				console.log("❌ 认证失败，已直接跳转到企业微信授权");
				
				// 执行失败回调
				if (typeof failCallback === 'function') {
					failCallback();
				}
			}
			
			return authResult;
		}
	}
}
